package 力扣.位运算.移位运算;

public class 二的幂231 {
    public static void main(String[] args) {
        int n = 16;
//        int n = -16;
        boolean powerOfTwo = isPowerOfTwo(n);//10001
        System.out.println(powerOfTwo);
    }
    public static boolean isPowerOfTwo(int n) {
         int pd = -1;
         if (n == 1){
             return true;
         }
         if (n <= 0){
             return false;
         }
         while ( n !=1 ){ //不断地右移，看是否有 1
             pd = n & 1;
             if (pd != 0){
                 return false;
             }
             n >>= 1;
         }
         return true;
    }
    public static boolean isPowerOfTwo2(int n) {
        return n>0 && Integer.bitCount(n) == 1;//只有一个比特位为1
    }
    public static boolean isPowerOfTwo3(int n) {
        return n>0 && ( n & (n-1) )== 0;//1000 & 0111得 0
    }
}
